package code

import "fmt"

type Any interface{}

// 空接口
func ReferenceInterface3() {
	// var a interface {}
	var a Any
	a = "hello"
	fmt.Println(a)
	a = 100
	fmt.Println(a)

	// 1.18后 提供 any 别名
	var b any
	b = "11111"
	fmt.Println(b)
	b = 5555
	fmt.Println(b)
}

// 判断变量类型
func ReferenceInterface4() {
	justfyType(10)
	justfyType("hello")
	justfyType(true)
	justfyType(3.14)
}

func justfyType(a interface{}) {
	// a.(type) 只能在switch使用
	switch v := a.(type) {
	case int:
		fmt.Println("int", v)
	case string:
		fmt.Println("string", v)
	case bool:
		fmt.Println("bool", v)
	default:
		fmt.Println("unknown", v)
	}
}
